package com.tinfeng.uplevel;

public class JavaAnnotaion {
    // java 注解
    /**
     * 注解的作用
     * 2.1 内置的注解
     * 我们先看一下 Java 提供了哪些内置注解，以及这些注解的作用。（大致了解即可）
     *
     * Java 定义了一套注解，共有 10 个，5 个在 java.lang 包中，剩下 5 个在 java.lang.annotation 包中。
     *
     * 2.1.1 用在代码的注解
     * @Override：检查该方法是否正确地重写了父类的方法。如果重写错误，会报编译错误；
     *
     * @Deprecated：标记过时方法。如果使用该方法，会报编译警告；
     *
     * @SuppressWarnings：指示编译器去忽略注解中声明的警告；
     *
     * @SafeVarargs：Java 7 开始支持，忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告；
     *
     * @FunctionalInterface：Java 8 开始支持，标识一个匿名函数或函数式接口。
     *
     * 2.1.2 用在其他注解的注解
     * 此类注解也称为元注解（meta annotation），在下面学习定义注解的时候，我们将会详细讲解。
     *
     * @Retention：标识这个注解怎么保存，是只在代码中，还是编入class文件中，或者是在运行时可以通过反射访问；
     *
     * @Documented：标记这些注解是否包含在用户文档中；
     *
     * @Target：标记这个注解应该是哪种 Java 成员；
     *
     * @Inherited：标记这个注解是继承于哪个注解类；
     *
     * @Repeatable：Java 8 开始支持，标识某注解可以在同一个声明上使用多次。
     *
     * 2.2 分类
     * Java 注解可以分为 3 类：
     *
     * 由编译器使用的注解：如@Override、@Deprecated、@SupressWarnings等；
     *
     * 由工具处理.class文件使用的注解：比如有些工具会在加载class的时候，对class做动态修改，实现一些特殊的功能。这类注解会被编译进入.class文件，但加载结束后并不会存在于内存中。这类注解只被一些底层库使用，一般我们不必自己处理；
     *
     * 在程序运行期间能够读取的注解：它们在加载后一直存在于JVM中，这也是最常用的注解。
     */

    /**
     * 定义注解
     *
     * 1.创建注解；
     *
     * 2.定义注解的参数和默认值；
     *
     * 3.用元注解配置注解。
     */
}
